wants <- c('mirt','semPlot','semTools','psych','parameters','olsrr','lavaan','knitr','matrixStats','stats','dplyr','readr')
has <- wants %in% rownames(installed.packages())
if (any(!has)) install.packages(wants[!has])
#' Calculate factors from cfa model
#'
#' This functions calculate composite reliability values of factors
#'
#' @param fit a lavaan object expected to contain a CFA model
#' @param return.total logical indicating whether to return a final column containing the reliability of a composite of all items.
#' @return Reliability values of each factor in each group.
getFactors <- function(fit, secondFactor = NULL) {
sl <- standardizedSolution(fit)
sl <- sl[sl$op == '=~',]
lfactors <- lapply(unique(sl$lhs), FUN = function(lhs) {
sl$rhs[sl$lhs == lhs]
})
names(lfactors) <- unique(sl$lhs)
if (!is.null(secondFactor))
lfactors[[secondFactor]] <- NULL
return(lfactors)
}
#' Calculate composite reliability of factors
#'
#' This functions calculate composite reliability values of factors
#'
#' @param fit a lavaan object expected to contain a CFA model
#' @param return.total logical indicating whether to return a final column containing the reliability of a composite of all items.
#' @return Reliability values of each factor in each group.
compReliability <- function(fit, return.total = F) {
toReturn <- sapply(getFactors(fit), FUN = function(x) {
sl <- standardizedSolution(fit)
sl <- sl$est.std[sl$op == "=~" & sl$rhs %in% x]
names(sl) <- x
re <- 1 - sl^2
sum(sl)^2 / (sum(sl)^2 + sum(re))
})
if (return.total) {
sl <- standardizedSolution(fit)
sl <- sl$est.std[sl$op == "=~"]
re <- 1 - sl^2
toReturn <- c(toReturn, total=sum(sl)^2 / (sum(sl)^2 + sum(re)))
}
toReturn
}
#' Asessing convergent and discriminant validity
#'
#' This functions assess the discriminant and convergent validity of factors
#' based on Heterotrait-Monotrait Ratio (semTools::htmt).
#'
#' @param fit a lavaan object expected to contain a CFA model
#' @param lnv string with the lavaan syntax of the fit CFA model.
#' @param dat data.frame with the data used in the CFA model
#' @param secondFactor second factor to be used in the CFA model
#' @return Composite Reliability, AVE and matrix of Heterotrait-Monotrait Ratio
convergentDiscriminantValidity <- function(fit, lvn, dat, secondFactor = NULL) {
library(olsrr)
library(semTools)
CR <- compReliability(fit)
AVE <- reliability(fit)[c("avevar"),]
if (!is.null(secondFactor)) {
AVE[secondFactor] <- reliability(fit, return.total = TRUE)["avevar","total"]
}
factors <- getFactors(fit, secondFactor)
for (f1 in names(factors)) dat[[f1]] <- rowSums(dat[,factors[[f1]]])
if (is.null(secondFactor)) secondFactor <- 'F0'
dat[[secondFactor]] <- rowSums(dat[,names(factors)])
mdl <- lm(as.formula(paste0(secondFactor,' ~ ', paste0(names(factors), collapse = '+'))), data = dat)
VIF <- ols_vif_tol(mdl)$VIF
VIF.i <- sapply(names(factors), FUN = function(f1) {
mdl <- lm(as.formula(paste0(f1,' ~ ',paste0(factors[[f1]], collapse = '+'))), data = dat)
max(ols_vif_tol(mdl)$VIF)
})
lvn2 <- stringr::str_replace(lvn, paste0("\n\\s*",secondFactor,"\\s*.*=~\\s*.*\n","\n"),"\n\n")
corr.df <- as.table(inspect(fit, "cor.lv"))
corr.df[upper.tri(corr.df)] <- NA
htmt.df <- as.table(semTools::htmt(lvn2, dat))
if (is.null(secondFactor) || secondFactor != 'F0') {
cnames <- colnames(htmt.df)
htmt.df <- cbind(htmt.df, rep(NA, nrow(htmt.df)))
htmt.df <- rbind(htmt.df, rep(NA, ncol(htmt.df)))
rownames(htmt.df) <- c(cnames, secondFactor)
colnames(htmt.df) <- c(cnames, secondFactor)
}
htmt.df[lower.tri(htmt.df)] <- NA
df <- corr.df
df[upper.tri(corr.df)] <- htmt.df[upper.tri(df)]
for (cname in names(AVE)) df[cname,cname] <- sqrt(AVE[[cname]])
as.data.frame(cbind(CR,AVE, VIF, VIF.i, df))
}
#' Summarize fit indexes of CFA models
#'
#' This functions summarize fit indexes from CFA models
#'
#' @param fits a list of lavaan objects with CFA models
#' @return fit indexes results of CFA models
summariseFits <- function(fits) {
df_fit <- do.call(rbind, lapply(fits, FUN = function(fit) {
dat <- as.list(round(fitMeasures(fit, c("chisq","df","gfi","agfi","cfi","tli","srmr","rmsea","rmsea.ci.lower","rmsea.ci.upper")), 3))
rbind(c(dat[c("chisq","df")],"chisq/df"=round(dat$chisq/dat$df,3)
, dat[c("gfi","agfi","cfi","tli","srmr","rmsea")]
, "rmsea.ci" = paste0("[",dat$rmsea.ci.lower,"; ",dat$rmsea.ci.upper,"]")))
}))
rownames(df_fit) <- names(fits)
return(df_fit)
}
library(readr)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
fss <- read.csv("../data/fss.csv")
fss <- select(fss, starts_with("Q"))
(parameters::check_sphericity_bartlett(fss))
## Registered S3 method overwritten by 'parameters':
## method from
## format.parameters_distribution datawizard
## # Test of Sphericity
##
## Bartlett's test of sphericity suggests that there is sufficient significant correlation in the data for factor analysis (Chisq(630) = 6795.14, p < .001).
library(psych)
(kmo_mod <- psych::KMO(fss))
## Kaiser-Meyer-Olkin factor adequacy
## Call: psych::KMO(r = fss)
## Overall MSA = 0.87
## MSA for each item =
## Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16
## 0.90 0.89 0.88 0.91 0.90 0.84 0.90 0.69 0.80 0.89 0.92 0.84 0.85 0.91 0.91 0.80
## Q17 Q18 Q19 Q20 Q21 Q22 Q23 Q24 Q25 Q26 Q27 Q28 Q29 Q30 Q31 Q32
## 0.85 0.81 0.85 0.82 0.90 0.85 0.88 0.92 0.89 0.88 0.92 0.83 0.65 0.93 0.88 0.86
## Q33 Q34 Q35 Q36
## 0.94 0.80 0.77 0.87
df <- cbind(
sapply(colnames(fss), function(x) round(mean(fss[[x]]), digits = 3)),
sapply(colnames(fss), function(x) round(median(fss[[x]]), digits = 3)),
sapply(colnames(fss), function(x) round(sd(fss[[x]]), digits = 3)),
sapply(colnames(fss), function(x) round(skew(fss[[x]]), digits = 3)),
sapply(colnames(fss), function(x) round(kurtosi(fss[[x]]), digits = 3)),
sapply(colnames(fss), function(x) round(shapiro.test(fss[[x]])$statistic, digits = 3)),
sapply(colnames(fss), function(x) {
p.val <- shapiro.test(fss[[x]])$p
if (p.val < 0.001)
return("< 0.001")
else
return(round(p.val, digits = 3))
}),
round(kmo_mod$MSAi, digits =3)
)
colnames(df) <- c("M","Mdn","SD","Skew","Kurtosis","W (statistic)","p.val","MSAi")
knitr::kable(df, digits = 3)
| M | Mdn | SD | Skew | Kurtosis | W (statistic) | p.val | MSAi | |
|---|---|---|---|---|---|---|---|---|
| Q1 | 3.987 | 4 | 0.831 | -0.953 | 1.368 | 0.814 | < 0.001 | 0.901 |
| Q2 | 3.167 | 3 | 1.164 | -0.201 | -0.919 | 0.906 | < 0.001 | 0.891 |
| Q3 | 3.306 | 3 | 0.981 | -0.141 | -0.738 | 0.895 | < 0.001 | 0.884 |
| Q4 | 3.717 | 4 | 0.886 | -0.594 | 0.164 | 0.862 | < 0.001 | 0.909 |
| Q5 | 3.551 | 4 | 0.989 | -0.422 | -0.452 | 0.886 | < 0.001 | 0.902 |
| Q6 | 3.136 | 3 | 1.225 | -0.227 | -1.062 | 0.895 | < 0.001 | 0.841 |
| Q7 | 3.515 | 4 | 1.032 | -0.488 | -0.433 | 0.885 | < 0.001 | 0.902 |
| Q8 | 3.071 | 3 | 1.199 | -0.127 | -0.873 | 0.914 | < 0.001 | 0.688 |
| Q9 | 3.505 | 4 | 1.032 | -0.516 | -0.238 | 0.89 | < 0.001 | 0.8 |
| Q10 | 3.793 | 4 | 1.003 | -0.586 | -0.217 | 0.873 | < 0.001 | 0.892 |
| Q11 | 3.414 | 4 | 1.041 | -0.349 | -0.596 | 0.897 | < 0.001 | 0.919 |
| Q12 | 3.076 | 3 | 1.048 | -0.072 | -0.79 | 0.906 | < 0.001 | 0.838 |
| Q13 | 3.167 | 3 | 0.992 | -0.089 | -0.756 | 0.898 | < 0.001 | 0.849 |
| Q14 | 3.598 | 4 | 1.12 | -0.689 | -0.309 | 0.867 | < 0.001 | 0.913 |
| Q15 | 3.639 | 4 | 0.91 | -0.454 | -0.25 | 0.873 | < 0.001 | 0.909 |
| Q16 | 3.331 | 4 | 1.156 | -0.224 | -0.989 | 0.896 | < 0.001 | 0.799 |
| Q17 | 3.278 | 3 | 1.018 | -0.215 | -0.632 | 0.903 | < 0.001 | 0.846 |
| Q18 | 3.043 | 3 | 1.082 | -0.049 | -0.71 | 0.915 | < 0.001 | 0.81 |
| Q19 | 3.553 | 4 | 1.024 | -0.425 | -0.447 | 0.892 | < 0.001 | 0.851 |
| Q20 | 3.53 | 4 | 1.124 | -0.385 | -0.73 | 0.895 | < 0.001 | 0.815 |
| Q21 | 3.366 | 3 | 0.978 | -0.279 | -0.364 | 0.9 | < 0.001 | 0.902 |
| Q22 | 3.242 | 3 | 1.017 | -0.252 | -0.867 | 0.879 | < 0.001 | 0.853 |
| Q23 | 3.51 | 4 | 0.997 | -0.402 | -0.433 | 0.891 | < 0.001 | 0.884 |
| Q24 | 3.682 | 4 | 0.9 | -0.395 | -0.395 | 0.873 | < 0.001 | 0.923 |
| Q25 | 3.386 | 4 | 1.031 | -0.338 | -0.701 | 0.888 | < 0.001 | 0.893 |
| Q26 | 3.323 | 3 | 1.07 | -0.309 | -0.684 | 0.9 | < 0.001 | 0.882 |
| Q27 | 3.442 | 4 | 0.978 | -0.324 | -0.367 | 0.897 | < 0.001 | 0.916 |
| Q28 | 3.232 | 3 | 1.152 | -0.074 | -0.875 | 0.912 | < 0.001 | 0.827 |
| Q29 | 3.043 | 3 | 1.107 | 0.016 | -0.886 | 0.909 | < 0.001 | 0.648 |
| Q30 | 3.841 | 4 | 0.959 | -0.539 | -0.399 | 0.866 | < 0.001 | 0.927 |
| Q31 | 3.578 | 4 | 0.926 | -0.41 | -0.41 | 0.875 | < 0.001 | 0.876 |
| Q32 | 3.669 | 4 | 1.053 | -0.572 | -0.492 | 0.869 | < 0.001 | 0.863 |
| Q33 | 3.702 | 4 | 0.867 | -0.598 | 0.054 | 0.85 | < 0.001 | 0.936 |
| Q34 | 3.409 | 4 | 1.234 | -0.376 | -0.93 | 0.892 | < 0.001 | 0.796 |
| Q35 | 3.265 | 3 | 1.142 | -0.244 | -0.76 | 0.91 | < 0.001 | 0.77 |
| Q36 | 3.846 | 4 | 1.053 | -0.64 | -0.386 | 0.862 | < 0.001 | 0.868 |
library(psych)
(pfa_mod <- fa.parallel(fss, fm = 'wls', fa = 'fa', cor='poly', n.iter = 1, main = "", ylabel = "", plot = F))
## Parallel analysis suggests that the number of factors = 9 and the number of components = NA
## Call: fa.parallel(x = fss, fm = "wls", fa = "fa", main = "", n.iter = 1,
## ylabel = "", cor = "poly", plot = F)
## Parallel analysis suggests that the number of factors = 9 and the number of components = NA
##
## Eigen Values of
##
## eigen values of factors
## [1] 9.97 3.37 1.91 1.10 0.90 0.73 0.46 0.33 0.28 0.18 0.11 0.04
## [13] -0.03 -0.08 -0.11 -0.13 -0.18 -0.22 -0.25 -0.28 -0.30 -0.31 -0.36 -0.38
## [25] -0.39 -0.44 -0.47 -0.51 -0.55 -0.55 -0.57 -0.62 -0.63 -0.65 -0.69 -0.73
##
## eigen values of simulated factors
## [1] 0.61 0.53 0.48 0.46 0.41 0.39 0.34 0.29 0.28 0.26 0.22 0.16
## [13] 0.13 0.10 0.07 0.05 0.04 0.01 -0.03 -0.05 -0.06 -0.10 -0.11 -0.16
## [25] -0.18 -0.20 -0.22 -0.25 -0.27 -0.28 -0.30 -0.34 -0.36 -0.38 -0.44 -0.46
##
## eigen values of components
## [1] 10.63 4.19 2.70 1.88 1.61 1.45 1.14 1.02 0.93 0.87 0.84 0.78
## [13] 0.66 0.62 0.59 0.55 0.50 0.48 0.44 0.41 0.39 0.38 0.33 0.32
## [25] 0.29 0.28 0.24 0.23 0.21 0.19 0.18 0.16 0.15 0.13 0.11 0.09
##
## eigen values of simulated components
## [1] NA
plot(pfa_mod)
efa_mod <- fa(fss, nfactors = 9, cor = 'poly', fm = 'wls')
## Loading required namespace: GPArotation
print(loadings(fa.sort(efa_mod)), cutoff = 0.3)
##
## Loadings:
## WLS2 WLS9 WLS8 WLS4 WLS5 WLS7 WLS6 WLS3 WLS1
## Q22 0.869
## Q13 0.725
## Q12 0.703
## Q3 0.599
## Q21 0.592
## Q6 0.464
## Q1 0.332 0.328
## Q23 0.875
## Q32 0.714
## Q5 0.598
## Q33 0.424
## Q24 0.400 0.386
## Q4 0.350
## Q10 0.644
## Q30 0.636
## Q36 0.631
## Q31 0.322 0.332
## Q28 0.708
## Q18 0.691
## Q8 0.688
## Q34 0.663 0.463
## Q16 0.892
## Q7 0.504
## Q25 0.480 0.333
## Q17 0.839
## Q26 0.447
## Q27 0.362
## Q20 0.329 0.682
## Q29 0.671 0.464
## Q2 0.597
## Q11 0.344 0.451
## Q9 0.713
## Q19 0.696
## Q35 0.620
## Q14 0.506
## Q15 0.435
##
## WLS2 WLS9 WLS8 WLS4 WLS5 WLS7 WLS6 WLS3 WLS1
## SS loadings 3.382 2.447 2.080 2.105 1.758 1.608 1.744 1.879 1.198
## Proportion Var 0.094 0.068 0.058 0.058 0.049 0.045 0.048 0.052 0.033
## Cumulative Var 0.094 0.162 0.220 0.278 0.327 0.372 0.420 0.472 0.506
We decided to use the mean and variance-adjusted weighted least squares (WLSMV) estimator. WLSMV adequately performs on non-normal variables, and WLSMV is a robust estimator developed to model categorical or ordered data (5-likert scale).
library(lavaan)
mdl4second <- '
CSB =~ Q1 + Q10 + Q19 + Q28
MAA =~ Q2 + Q11 + Q20 + Q29
CG =~ Q3 + Q12 + Q21 + Q30
UF =~ Q4 + Q13 + Q22 + Q31
CTH =~ Q5 + Q14 + Q23 + Q32
SC =~ Q6 + Q15 + Q24 + Q33
LSC =~ Q7 + Q16 + Q25 + Q34
TT =~ Q8 + Q17 + Q26 + Q35
AE =~ Q9 + Q18 + Q27 + Q36
FSS =~ CSB + MAA + CG + UF + CTH + SC + LSC + TT + AE
CSB ~~ 0*MAA
CSB ~~ 0*CG
CSB ~~ 0*UF
CSB ~~ 0*CTH
CSB ~~ 0*SC
CSB ~~ 0*LSC
CSB ~~ 0*TT
CSB ~~ 0*AE
MAA ~~ 0*CG
MAA ~~ 0*UF
MAA ~~ 0*CTH
MAA ~~ 0*SC
MAA ~~ 0*LSC
MAA ~~ 0*TT
MAA ~~ 0*AE
CG ~~ 0*UF
CG ~~ 0*CTH
CG ~~ 0*SC
CG ~~ 0*LSC
CG ~~ 0*TT
CG ~~ 0*AE
UF ~~ 0*CTH
UF ~~ 0*SC
UF ~~ 0*LSC
UF ~~ 0*TT
UF ~~ 0*AE
CTH ~~ 0*SC
CTH ~~ 0*LSC
CTH ~~ 0*TT
CTH ~~ 0*AE
SC ~~ 0*LSC
SC ~~ 0*TT
SC ~~ 0*AE
LSC ~~ 0*TT
LSC ~~ 0*AE
TT ~~ 0*AE
'
fit4second <-cfa(mdl4second, data=fss, estimator="WLSMV", std.lv=T)
## Warning in lav_samplestats_from_data(lavdata = lavdata, lavoptions = lavoptions, : lavaan WARNING: number of observations (396) too small to compute Gamma
standardizedSolution(fit4second)
## lhs op rhs est.std se z pvalue ci.lower ci.upper
## 1 CSB =~ Q1 0.523 0.047 11.183 0.000 0.431 0.615
## 2 CSB =~ Q10 0.645 0.042 15.304 0.000 0.563 0.728
## 3 CSB =~ Q19 0.458 0.046 10.072 0.000 0.369 0.548
## 4 CSB =~ Q28 0.465 0.047 9.962 0.000 0.373 0.556
## 5 MAA =~ Q2 0.697 0.044 15.665 0.000 0.609 0.784
## 6 MAA =~ Q11 0.801 0.050 15.939 0.000 0.702 0.899
## 7 MAA =~ Q20 0.633 0.051 12.530 0.000 0.534 0.732
## 8 MAA =~ Q29 0.323 0.069 4.718 0.000 0.189 0.458
## 9 CG =~ Q3 0.433 0.052 8.253 0.000 0.330 0.536
## 10 CG =~ Q12 0.182 0.062 2.941 0.003 0.061 0.303
## 11 CG =~ Q21 0.584 0.045 13.079 0.000 0.497 0.672
## 12 CG =~ Q30 0.700 0.050 14.140 0.000 0.603 0.797
## 13 UF =~ Q4 0.847 0.047 17.983 0.000 0.755 0.939
## 14 UF =~ Q13 0.371 0.062 6.025 0.000 0.250 0.492
## 15 UF =~ Q22 0.415 0.060 6.938 0.000 0.298 0.532
## 16 UF =~ Q31 0.667 0.049 13.495 0.000 0.570 0.764
## 17 CTH =~ Q5 0.614 0.042 14.625 0.000 0.532 0.697
## 18 CTH =~ Q14 0.539 0.044 12.319 0.000 0.453 0.625
## 19 CTH =~ Q23 0.674 0.036 18.601 0.000 0.603 0.745
## 20 CTH =~ Q32 0.644 0.041 15.832 0.000 0.564 0.724
## 21 SC =~ Q6 0.193 0.057 3.376 0.001 0.081 0.305
## 22 SC =~ Q15 0.661 0.037 17.661 0.000 0.588 0.735
## 23 SC =~ Q24 0.775 0.033 23.674 0.000 0.711 0.839
## 24 SC =~ Q33 0.680 0.035 19.603 0.000 0.612 0.748
## 25 LSC =~ Q7 0.787 0.044 17.764 0.000 0.701 0.874
## 26 LSC =~ Q16 0.695 0.046 15.032 0.000 0.604 0.785
## 27 LSC =~ Q25 0.719 0.041 17.532 0.000 0.639 0.799
## 28 LSC =~ Q34 0.541 0.051 10.674 0.000 0.442 0.640
## 29 TT =~ Q8 0.379 0.060 6.284 0.000 0.261 0.497
## 30 TT =~ Q17 0.713 0.048 14.775 0.000 0.619 0.808
## 31 TT =~ Q26 0.782 0.053 14.826 0.000 0.678 0.885
## 32 TT =~ Q35 0.407 0.059 6.846 0.000 0.290 0.523
## 33 AE =~ Q9 0.384 0.059 6.551 0.000 0.269 0.498
## 34 AE =~ Q18 0.439 0.055 7.920 0.000 0.331 0.548
## 35 AE =~ Q27 0.830 0.035 23.756 0.000 0.761 0.898
## 36 AE =~ Q36 0.659 0.042 15.832 0.000 0.578 0.741
## 37 FSS =~ CSB 0.917 0.038 24.293 0.000 0.843 0.991
## 38 FSS =~ MAA 0.615 0.061 10.063 0.000 0.495 0.734
## 39 FSS =~ CG 0.901 0.045 19.950 0.000 0.812 0.989
## 40 FSS =~ UF 0.674 0.049 13.773 0.000 0.578 0.770
## 41 FSS =~ CTH 0.900 0.040 22.596 0.000 0.822 0.978
## 42 FSS =~ SC 0.901 0.028 32.413 0.000 0.847 0.956
## 43 FSS =~ LSC 0.674 0.048 14.116 0.000 0.580 0.768
## 44 FSS =~ TT 0.701 0.060 11.740 0.000 0.584 0.818
## 45 FSS =~ AE 0.811 0.038 21.611 0.000 0.737 0.884
## 46 CSB ~~ MAA 0.000 0.000 NA NA 0.000 0.000
## 47 CSB ~~ CG 0.000 0.000 NA NA 0.000 0.000
## 48 CSB ~~ UF 0.000 0.000 NA NA 0.000 0.000
## 49 CSB ~~ CTH 0.000 0.000 NA NA 0.000 0.000
## 50 CSB ~~ SC 0.000 0.000 NA NA 0.000 0.000
## 51 CSB ~~ LSC 0.000 0.000 NA NA 0.000 0.000
## 52 CSB ~~ TT 0.000 0.000 NA NA 0.000 0.000
## 53 CSB ~~ AE 0.000 0.000 NA NA 0.000 0.000
## 54 MAA ~~ CG 0.000 0.000 NA NA 0.000 0.000
## 55 MAA ~~ UF 0.000 0.000 NA NA 0.000 0.000
## 56 MAA ~~ CTH 0.000 0.000 NA NA 0.000 0.000
## 57 MAA ~~ SC 0.000 0.000 NA NA 0.000 0.000
## 58 MAA ~~ LSC 0.000 0.000 NA NA 0.000 0.000
## 59 MAA ~~ TT 0.000 0.000 NA NA 0.000 0.000
## 60 MAA ~~ AE 0.000 0.000 NA NA 0.000 0.000
## 61 CG ~~ UF 0.000 0.000 NA NA 0.000 0.000
## 62 CG ~~ CTH 0.000 0.000 NA NA 0.000 0.000
## 63 CG ~~ SC 0.000 0.000 NA NA 0.000 0.000
## 64 CG ~~ LSC 0.000 0.000 NA NA 0.000 0.000
## 65 CG ~~ TT 0.000 0.000 NA NA 0.000 0.000
## 66 CG ~~ AE 0.000 0.000 NA NA 0.000 0.000
## 67 UF ~~ CTH 0.000 0.000 NA NA 0.000 0.000
## 68 UF ~~ SC 0.000 0.000 NA NA 0.000 0.000
## 69 UF ~~ LSC 0.000 0.000 NA NA 0.000 0.000
## 70 UF ~~ TT 0.000 0.000 NA NA 0.000 0.000
## 71 UF ~~ AE 0.000 0.000 NA NA 0.000 0.000
## 72 CTH ~~ SC 0.000 0.000 NA NA 0.000 0.000
## 73 CTH ~~ LSC 0.000 0.000 NA NA 0.000 0.000
## 74 CTH ~~ TT 0.000 0.000 NA NA 0.000 0.000
## 75 CTH ~~ AE 0.000 0.000 NA NA 0.000 0.000
## 76 SC ~~ LSC 0.000 0.000 NA NA 0.000 0.000
## 77 SC ~~ TT 0.000 0.000 NA NA 0.000 0.000
## 78 SC ~~ AE 0.000 0.000 NA NA 0.000 0.000
## 79 LSC ~~ TT 0.000 0.000 NA NA 0.000 0.000
## 80 LSC ~~ AE 0.000 0.000 NA NA 0.000 0.000
## 81 TT ~~ AE 0.000 0.000 NA NA 0.000 0.000
## 82 Q1 ~~ Q1 0.726 0.049 14.849 0.000 0.631 0.822
## 83 Q10 ~~ Q10 0.584 0.054 10.726 0.000 0.477 0.690
## 84 Q19 ~~ Q19 0.790 0.042 18.921 0.000 0.708 0.872
## 85 Q28 ~~ Q28 0.784 0.043 18.079 0.000 0.699 0.869
## 86 Q2 ~~ Q2 0.515 0.062 8.306 0.000 0.393 0.636
## 87 Q11 ~~ Q11 0.359 0.080 4.454 0.000 0.201 0.516
## 88 Q20 ~~ Q20 0.599 0.064 9.369 0.000 0.474 0.725
## 89 Q29 ~~ Q29 0.896 0.044 20.217 0.000 0.809 0.982
## 90 Q3 ~~ Q3 0.813 0.045 17.896 0.000 0.724 0.902
## 91 Q12 ~~ Q12 0.967 0.022 43.152 0.000 0.923 1.011
## 92 Q21 ~~ Q21 0.659 0.052 12.619 0.000 0.556 0.761
## 93 Q30 ~~ Q30 0.510 0.069 7.349 0.000 0.374 0.646
## 94 Q4 ~~ Q4 0.283 0.080 3.540 0.000 0.126 0.439
## 95 Q13 ~~ Q13 0.862 0.046 18.880 0.000 0.773 0.952
## 96 Q22 ~~ Q22 0.828 0.050 16.662 0.000 0.730 0.925
## 97 Q31 ~~ Q31 0.555 0.066 8.403 0.000 0.425 0.684
## 98 Q5 ~~ Q5 0.623 0.052 12.058 0.000 0.521 0.724
## 99 Q14 ~~ Q14 0.709 0.047 15.043 0.000 0.617 0.802
## 100 Q23 ~~ Q23 0.546 0.049 11.185 0.000 0.450 0.642
## 101 Q32 ~~ Q32 0.585 0.052 11.167 0.000 0.482 0.688
## 102 Q6 ~~ Q6 0.963 0.022 43.791 0.000 0.920 1.006
## 103 Q15 ~~ Q15 0.562 0.050 11.353 0.000 0.465 0.660
## 104 Q24 ~~ Q24 0.400 0.051 7.888 0.000 0.301 0.499
## 105 Q33 ~~ Q33 0.538 0.047 11.395 0.000 0.445 0.630
## 106 Q7 ~~ Q7 0.380 0.070 5.440 0.000 0.243 0.517
## 107 Q16 ~~ Q16 0.517 0.064 8.057 0.000 0.392 0.643
## 108 Q25 ~~ Q25 0.483 0.059 8.192 0.000 0.368 0.599
## 109 Q34 ~~ Q34 0.708 0.055 12.910 0.000 0.600 0.815
## 110 Q8 ~~ Q8 0.856 0.046 18.737 0.000 0.767 0.946
## 111 Q17 ~~ Q17 0.491 0.069 7.137 0.000 0.356 0.626
## 112 Q26 ~~ Q26 0.389 0.082 4.716 0.000 0.227 0.550
## 113 Q35 ~~ Q35 0.835 0.048 17.292 0.000 0.740 0.929
## 114 Q9 ~~ Q9 0.853 0.045 18.975 0.000 0.765 0.941
## 115 Q18 ~~ Q18 0.807 0.049 16.569 0.000 0.712 0.903
## 116 Q27 ~~ Q27 0.312 0.058 5.375 0.000 0.198 0.425
## 117 Q36 ~~ Q36 0.565 0.055 10.299 0.000 0.458 0.673
## 118 CSB ~~ CSB 0.159 0.069 2.293 0.022 0.023 0.295
## 119 MAA ~~ MAA 0.622 0.075 8.288 0.000 0.475 0.769
## 120 CG ~~ CG 0.189 0.081 2.318 0.020 0.029 0.348
## 121 UF ~~ UF 0.546 0.066 8.287 0.000 0.417 0.675
## 122 CTH ~~ CTH 0.190 0.072 2.647 0.008 0.049 0.330
## 123 SC ~~ SC 0.188 0.050 3.754 0.000 0.090 0.286
## 124 LSC ~~ LSC 0.546 0.064 8.481 0.000 0.420 0.672
## 125 TT ~~ TT 0.509 0.084 6.077 0.000 0.345 0.673
## 126 AE ~~ AE 0.343 0.061 5.642 0.000 0.224 0.462
## 127 FSS ~~ FSS 1.000 0.000 NA NA 1.000 1.000
fitMeasures(fit4second)
## npar fmin
## 81.000 3.499
## chisq df
## 2771.034 585.000
## pvalue chisq.scaled
## 0.000 2149.296
## df.scaled pvalue.scaled
## 585.000 0.000
## chisq.scaling.factor baseline.chisq
## 1.551 14681.305
## baseline.df baseline.pvalue
## 630.000 0.000
## baseline.chisq.scaled baseline.df.scaled
## 3951.121 630.000
## baseline.pvalue.scaled baseline.chisq.scaling.factor
## 0.000 4.231
## cfi tli
## 0.844 0.832
## nnfi rfi
## 0.832 0.797
## nfi pnfi
## 0.811 0.753
## ifi rni
## 0.845 0.844
## cfi.scaled tli.scaled
## 0.529 0.493
## cfi.robust tli.robust
## NA NA
## nnfi.scaled nnfi.robust
## 0.493 NA
## rfi.scaled nfi.scaled
## 0.414 0.456
## ifi.scaled rni.scaled
## 0.535 0.529
## rni.robust rmsea
## NA 0.097
## rmsea.ci.lower rmsea.ci.upper
## 0.094 0.101
## rmsea.pvalue rmsea.scaled
## 0.000 0.082
## rmsea.ci.lower.scaled rmsea.ci.upper.scaled
## 0.079 0.086
## rmsea.pvalue.scaled rmsea.robust
## 0.000 NA
## rmsea.ci.lower.robust rmsea.ci.upper.robust
## NA NA
## rmsea.pvalue.robust rmr
## NA 0.125
## rmr_nomean srmr
## 0.125 0.111
## srmr_bentler srmr_bentler_nomean
## 0.111 0.111
## crmr crmr_nomean
## 0.114 0.114
## srmr_mplus srmr_mplus_nomean
## 0.111 0.111
## cn_05 cn_01
## 92.568 96.150
## gfi agfi
## 0.888 0.873
## pgfi mfi
## 0.780 0.063
## ecvi
## 7.425
library(semPlot)
semPlot::semPaths(
fit4second, "std", curvePivot = T, layout = "tree", rotation = 1,
fade = T, intercepts = T, residuals = T, esize = 1.5, asize = 1.5)
library(semTools)
semTools::reliabilityL2(fit4second, "FSS")
## omegaL1 omegaL2 partialOmegaL1
## 0.8576015 0.9528720 0.9161821
(df <- semTools::reliability(fit4second, return.total = T))
## CSB MAA CG UF CTH SC LSC
## alpha 0.5936267 0.7230577 0.6044585 0.7120178 0.6978117 0.6141302 0.7771464
## omega 0.5954992 0.7146745 0.5397522 0.6598326 0.7091786 0.6311211 0.7729580
## omega2 0.5954992 0.7146745 0.5397522 0.6598326 0.7091786 0.6311211 0.7729580
## omega3 0.5931738 0.6841776 0.4792408 0.5930998 0.7212836 0.6259358 0.7651055
## avevar 0.2737284 0.4032213 0.2524549 0.3438343 0.3794386 0.3217542 0.4612470
## TT AE total
## alpha 0.6588516 0.6692618 0.9064489
## omega 0.6528319 0.6703087 0.9215414
## omega2 0.6528319 0.6703087 0.9215414
## omega3 0.6326085 0.6541159 0.9042825
## avevar 0.3349686 0.3540319 0.3515626
knitr::kable(df, digits = 3)
| CSB | MAA | CG | UF | CTH | SC | LSC | TT | AE | total | |
|---|---|---|---|---|---|---|---|---|---|---|
| alpha | 0.594 | 0.723 | 0.604 | 0.712 | 0.698 | 0.614 | 0.777 | 0.659 | 0.669 | 0.906 |
| omega | 0.595 | 0.715 | 0.540 | 0.660 | 0.709 | 0.631 | 0.773 | 0.653 | 0.670 | 0.922 |
| omega2 | 0.595 | 0.715 | 0.540 | 0.660 | 0.709 | 0.631 | 0.773 | 0.653 | 0.670 | 0.922 |
| omega3 | 0.593 | 0.684 | 0.479 | 0.593 | 0.721 | 0.626 | 0.765 | 0.633 | 0.654 | 0.904 |
| avevar | 0.274 | 0.403 | 0.252 | 0.344 | 0.379 | 0.322 | 0.461 | 0.335 | 0.354 | 0.352 |
(df <- convergentDiscriminantValidity(fit4second, mdl4second, fss, "FSS"))
## Warning in cbind(CR, AVE, VIF, VIF.i, df): number of rows of result is not a
## multiple of vector length (arg 3)
## CR AVE VIF VIF.i CSB MAA CG
## CSB 0.6026789 0.2737284 2.110524 1.350265 0.5231906 0.5473725 0.8529059
## MAA 0.7177382 0.4032213 1.415515 1.697888 0.5636998 0.6349971 0.4975342
## CG 0.5501836 0.2524549 2.244220 1.449625 0.8261945 0.5536503 0.5024489
## UF 0.6767978 0.3438343 2.056871 1.792668 0.6178836 0.4140567 0.6068680
## CTH 0.7125909 0.3794386 2.100689 1.784923 0.8255545 0.5532214 0.8108366
## SC 0.6839725 0.3217542 2.506635 1.619964 0.8264220 0.5538027 0.8116886
## LSC 0.7826656 0.4612470 1.489139 1.673296 0.6181269 0.4142198 0.6071071
## TT 0.6691425 0.3349686 1.763343 1.495731 0.6428811 0.4308081 0.6314199
## AE 0.6781292 0.3540319 2.141595 1.589625 0.7433918 0.4981625 0.7301387
## FSS 0.9385987 0.3515626 2.110524 1.350265 0.9171647 0.6146113 0.9008136
## UF CTH SC LSC TT AE FSS
## CSB 0.6823664 0.7269748 0.8414861 0.6297587 0.6607577 0.9595111 NA
## MAA 0.3265656 0.5696953 0.4686285 0.4113716 0.6741444 0.6174888 NA
## CG 1.0150820 0.6763847 1.0010753 0.5216722 0.4383197 0.5936177 NA
## UF 0.5863739 0.5541886 0.8865678 0.4160803 0.2566063 0.4406559 NA
## CTH 0.6063979 0.6159859 0.9823847 0.6880799 0.6205455 0.6408338 NA
## SC 0.6070351 0.8110599 0.5672338 0.5810143 0.5335089 0.6588856 NA
## LSC 0.4540353 0.6066368 0.6072742 0.6791517 0.4591919 0.5423177 NA
## TT 0.4722181 0.6309308 0.6315938 0.4724041 0.5787647 0.8980058 NA
## AE 0.5460466 0.7295731 0.7303398 0.5462617 0.5681379 0.5950058 NA
## FSS 0.6736887 0.9001158 0.9010617 0.6739541 0.7009440 0.8105325 0.5929271
knitr::kable(df, digits = 3)
| CR | AVE | VIF | VIF.i | CSB | MAA | CG | UF | CTH | SC | LSC | TT | AE | FSS | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| CSB | 0.603 | 0.274 | 2.111 | 1.350 | 0.523 | 0.547 | 0.853 | 0.682 | 0.727 | 0.841 | 0.630 | 0.661 | 0.960 | NA |
| MAA | 0.718 | 0.403 | 1.416 | 1.698 | 0.564 | 0.635 | 0.498 | 0.327 | 0.570 | 0.469 | 0.411 | 0.674 | 0.617 | NA |
| CG | 0.550 | 0.252 | 2.244 | 1.450 | 0.826 | 0.554 | 0.502 | 1.015 | 0.676 | 1.001 | 0.522 | 0.438 | 0.594 | NA |
| UF | 0.677 | 0.344 | 2.057 | 1.793 | 0.618 | 0.414 | 0.607 | 0.586 | 0.554 | 0.887 | 0.416 | 0.257 | 0.441 | NA |
| CTH | 0.713 | 0.379 | 2.101 | 1.785 | 0.826 | 0.553 | 0.811 | 0.606 | 0.616 | 0.982 | 0.688 | 0.621 | 0.641 | NA |
| SC | 0.684 | 0.322 | 2.507 | 1.620 | 0.826 | 0.554 | 0.812 | 0.607 | 0.811 | 0.567 | 0.581 | 0.534 | 0.659 | NA |
| LSC | 0.783 | 0.461 | 1.489 | 1.673 | 0.618 | 0.414 | 0.607 | 0.454 | 0.607 | 0.607 | 0.679 | 0.459 | 0.542 | NA |
| TT | 0.669 | 0.335 | 1.763 | 1.496 | 0.643 | 0.431 | 0.631 | 0.472 | 0.631 | 0.632 | 0.472 | 0.579 | 0.898 | NA |
| AE | 0.678 | 0.354 | 2.142 | 1.590 | 0.743 | 0.498 | 0.730 | 0.546 | 0.730 | 0.730 | 0.546 | 0.568 | 0.595 | NA |
| FSS | 0.939 | 0.352 | 2.111 | 1.350 | 0.917 | 0.615 | 0.901 | 0.674 | 0.900 | 0.901 | 0.674 | 0.701 | 0.811 | 0.593 |
library(lavaan)
mdl4second31 <- '
CSB =~ Q1 + Q10 + Q19 + Q28
MAA =~ Q2 + Q11 + Q20
CG =~ Q3 + Q21 + Q30
UF =~ Q4 + Q13 + Q22 + Q31
CTH =~ Q5 + Q14 + Q23 + Q32
SC =~ Q15 + Q24 + Q33
LSC =~ Q7 + Q16 + Q25 + Q34
TT =~ Q17 + Q26 + Q35
AE =~ Q18 + Q27 + Q36
FSS =~ CSB + MAA + CG + UF + CTH + SC + LSC + TT + AE
CSB ~~ 0*MAA
CSB ~~ 0*CG
CSB ~~ 0*UF
CSB ~~ 0*CTH
CSB ~~ 0*SC
CSB ~~ 0*LSC
CSB ~~ 0*TT
CSB ~~ 0*AE
MAA ~~ 0*CG
MAA ~~ 0*UF
MAA ~~ 0*CTH
MAA ~~ 0*SC
MAA ~~ 0*LSC
MAA ~~ 0*TT
MAA ~~ 0*AE
CG ~~ 0*UF
CG ~~ 0*CTH
CG ~~ 0*SC
CG ~~ 0*LSC
CG ~~ 0*TT
CG ~~ 0*AE
UF ~~ 0*CTH
UF ~~ 0*SC
UF ~~ 0*LSC
UF ~~ 0*TT
UF ~~ 0*AE
CTH ~~ 0*SC
CTH ~~ 0*LSC
CTH ~~ 0*TT
CTH ~~ 0*AE
SC ~~ 0*LSC
SC ~~ 0*TT
SC ~~ 0*AE
LSC ~~ 0*TT
LSC ~~ 0*AE
TT ~~ 0*AE
'
fit4second31 <-cfa(mdl4second31, data=fss, estimator="WLSMV", std.lv=T)
## Warning in lav_samplestats_from_data(lavdata = lavdata, lavoptions = lavoptions, : lavaan WARNING: number of observations (396) too small to compute Gamma
standardizedSolution(fit4second31)
## lhs op rhs est.std se z pvalue ci.lower ci.upper
## 1 CSB =~ Q1 0.539 0.047 11.404 0.000 0.446 0.631
## 2 CSB =~ Q10 0.665 0.043 15.480 0.000 0.581 0.749
## 3 CSB =~ Q19 0.434 0.048 9.069 0.000 0.341 0.528
## 4 CSB =~ Q28 0.453 0.048 9.378 0.000 0.358 0.547
## 5 MAA =~ Q2 0.685 0.043 16.044 0.000 0.601 0.768
## 6 MAA =~ Q11 0.773 0.047 16.552 0.000 0.681 0.864
## 7 MAA =~ Q20 0.614 0.052 11.893 0.000 0.513 0.715
## 8 CG =~ Q3 0.389 0.053 7.351 0.000 0.285 0.493
## 9 CG =~ Q21 0.552 0.045 12.373 0.000 0.464 0.639
## 10 CG =~ Q30 0.686 0.047 14.532 0.000 0.593 0.778
## 11 UF =~ Q4 0.863 0.048 17.889 0.000 0.769 0.958
## 12 UF =~ Q13 0.336 0.064 5.262 0.000 0.211 0.461
## 13 UF =~ Q22 0.383 0.062 6.219 0.000 0.263 0.504
## 14 UF =~ Q31 0.675 0.049 13.715 0.000 0.579 0.772
## 15 CTH =~ Q5 0.602 0.042 14.459 0.000 0.520 0.683
## 16 CTH =~ Q14 0.541 0.043 12.555 0.000 0.457 0.626
## 17 CTH =~ Q23 0.673 0.036 18.955 0.000 0.604 0.743
## 18 CTH =~ Q32 0.653 0.040 16.520 0.000 0.575 0.730
## 19 SC =~ Q15 0.652 0.038 17.275 0.000 0.578 0.726
## 20 SC =~ Q24 0.779 0.032 24.425 0.000 0.716 0.841
## 21 SC =~ Q33 0.685 0.034 20.310 0.000 0.619 0.752
## 22 LSC =~ Q7 0.788 0.043 18.267 0.000 0.703 0.872
## 23 LSC =~ Q16 0.698 0.045 15.391 0.000 0.609 0.786
## 24 LSC =~ Q25 0.729 0.040 18.156 0.000 0.650 0.808
## 25 LSC =~ Q34 0.524 0.051 10.202 0.000 0.423 0.624
## 26 TT =~ Q17 0.703 0.049 14.387 0.000 0.607 0.798
## 27 TT =~ Q26 0.783 0.050 15.803 0.000 0.686 0.881
## 28 TT =~ Q35 0.364 0.060 6.083 0.000 0.247 0.481
## 29 AE =~ Q18 0.393 0.058 6.782 0.000 0.279 0.506
## 30 AE =~ Q27 0.826 0.033 25.266 0.000 0.762 0.890
## 31 AE =~ Q36 0.666 0.039 17.120 0.000 0.590 0.742
## 32 FSS =~ CSB 0.882 0.039 22.792 0.000 0.806 0.958
## 33 FSS =~ MAA 0.656 0.056 11.648 0.000 0.546 0.767
## 34 FSS =~ CG 0.948 0.047 20.187 0.000 0.856 1.040
## 35 FSS =~ UF 0.663 0.049 13.451 0.000 0.566 0.759
## 36 FSS =~ CTH 0.919 0.038 24.158 0.000 0.845 0.994
## 37 FSS =~ SC 0.912 0.027 34.028 0.000 0.859 0.964
## 38 FSS =~ LSC 0.674 0.047 14.205 0.000 0.581 0.767
## 39 FSS =~ TT 0.724 0.056 12.965 0.000 0.615 0.834
## 40 FSS =~ AE 0.825 0.039 21.101 0.000 0.748 0.901
## 41 CSB ~~ MAA 0.000 0.000 NA NA 0.000 0.000
## 42 CSB ~~ CG 0.000 0.000 NA NA 0.000 0.000
## 43 CSB ~~ UF 0.000 0.000 NA NA 0.000 0.000
## 44 CSB ~~ CTH 0.000 0.000 NA NA 0.000 0.000
## 45 CSB ~~ SC 0.000 0.000 NA NA 0.000 0.000
## 46 CSB ~~ LSC 0.000 0.000 NA NA 0.000 0.000
## 47 CSB ~~ TT 0.000 0.000 NA NA 0.000 0.000
## 48 CSB ~~ AE 0.000 0.000 NA NA 0.000 0.000
## 49 MAA ~~ CG 0.000 0.000 NA NA 0.000 0.000
## 50 MAA ~~ UF 0.000 0.000 NA NA 0.000 0.000
## 51 MAA ~~ CTH 0.000 0.000 NA NA 0.000 0.000
## 52 MAA ~~ SC 0.000 0.000 NA NA 0.000 0.000
## 53 MAA ~~ LSC 0.000 0.000 NA NA 0.000 0.000
## 54 MAA ~~ TT 0.000 0.000 NA NA 0.000 0.000
## 55 MAA ~~ AE 0.000 0.000 NA NA 0.000 0.000
## 56 CG ~~ UF 0.000 0.000 NA NA 0.000 0.000
## 57 CG ~~ CTH 0.000 0.000 NA NA 0.000 0.000
## 58 CG ~~ SC 0.000 0.000 NA NA 0.000 0.000
## 59 CG ~~ LSC 0.000 0.000 NA NA 0.000 0.000
## 60 CG ~~ TT 0.000 0.000 NA NA 0.000 0.000
## 61 CG ~~ AE 0.000 0.000 NA NA 0.000 0.000
## 62 UF ~~ CTH 0.000 0.000 NA NA 0.000 0.000
## 63 UF ~~ SC 0.000 0.000 NA NA 0.000 0.000
## 64 UF ~~ LSC 0.000 0.000 NA NA 0.000 0.000
## 65 UF ~~ TT 0.000 0.000 NA NA 0.000 0.000
## 66 UF ~~ AE 0.000 0.000 NA NA 0.000 0.000
## 67 CTH ~~ SC 0.000 0.000 NA NA 0.000 0.000
## 68 CTH ~~ LSC 0.000 0.000 NA NA 0.000 0.000
## 69 CTH ~~ TT 0.000 0.000 NA NA 0.000 0.000
## 70 CTH ~~ AE 0.000 0.000 NA NA 0.000 0.000
## 71 SC ~~ LSC 0.000 0.000 NA NA 0.000 0.000
## 72 SC ~~ TT 0.000 0.000 NA NA 0.000 0.000
## 73 SC ~~ AE 0.000 0.000 NA NA 0.000 0.000
## 74 LSC ~~ TT 0.000 0.000 NA NA 0.000 0.000
## 75 LSC ~~ AE 0.000 0.000 NA NA 0.000 0.000
## 76 TT ~~ AE 0.000 0.000 NA NA 0.000 0.000
## 77 Q1 ~~ Q1 0.710 0.051 13.950 0.000 0.610 0.810
## 78 Q10 ~~ Q10 0.558 0.057 9.776 0.000 0.446 0.670
## 79 Q19 ~~ Q19 0.811 0.042 19.488 0.000 0.730 0.893
## 80 Q28 ~~ Q28 0.795 0.044 18.184 0.000 0.709 0.881
## 81 Q2 ~~ Q2 0.531 0.058 9.086 0.000 0.417 0.646
## 82 Q11 ~~ Q11 0.403 0.072 5.583 0.000 0.261 0.544
## 83 Q20 ~~ Q20 0.623 0.063 9.825 0.000 0.499 0.747
## 84 Q3 ~~ Q3 0.849 0.041 20.612 0.000 0.768 0.929
## 85 Q21 ~~ Q21 0.696 0.049 14.131 0.000 0.599 0.792
## 86 Q30 ~~ Q30 0.530 0.065 8.183 0.000 0.403 0.657
## 87 Q4 ~~ Q4 0.255 0.083 3.060 0.002 0.092 0.418
## 88 Q13 ~~ Q13 0.887 0.043 20.732 0.000 0.803 0.971
## 89 Q22 ~~ Q22 0.853 0.047 18.037 0.000 0.760 0.946
## 90 Q31 ~~ Q31 0.544 0.067 8.172 0.000 0.413 0.674
## 91 Q5 ~~ Q5 0.638 0.050 12.728 0.000 0.540 0.736
## 92 Q14 ~~ Q14 0.707 0.047 15.131 0.000 0.615 0.798
## 93 Q23 ~~ Q23 0.547 0.048 11.432 0.000 0.453 0.640
## 94 Q32 ~~ Q32 0.574 0.052 11.121 0.000 0.473 0.675
## 95 Q15 ~~ Q15 0.575 0.049 11.700 0.000 0.479 0.672
## 96 Q24 ~~ Q24 0.393 0.050 7.922 0.000 0.296 0.491
## 97 Q33 ~~ Q33 0.530 0.046 11.463 0.000 0.440 0.621
## 98 Q7 ~~ Q7 0.380 0.068 5.587 0.000 0.246 0.513
## 99 Q16 ~~ Q16 0.513 0.063 8.121 0.000 0.390 0.637
## 100 Q25 ~~ Q25 0.468 0.059 7.997 0.000 0.354 0.583
## 101 Q34 ~~ Q34 0.726 0.054 13.490 0.000 0.620 0.831
## 102 Q17 ~~ Q17 0.506 0.069 7.373 0.000 0.372 0.641
## 103 Q26 ~~ Q26 0.386 0.078 4.974 0.000 0.234 0.539
## 104 Q35 ~~ Q35 0.868 0.044 19.940 0.000 0.782 0.953
## 105 Q18 ~~ Q18 0.846 0.045 18.612 0.000 0.757 0.935
## 106 Q27 ~~ Q27 0.317 0.054 5.872 0.000 0.211 0.423
## 107 Q36 ~~ Q36 0.557 0.052 10.753 0.000 0.455 0.658
## 108 CSB ~~ CSB 0.222 0.068 3.250 0.001 0.088 0.356
## 109 MAA ~~ MAA 0.569 0.074 7.698 0.000 0.424 0.714
## 110 CG ~~ CG 0.101 0.089 1.130 0.258 -0.074 0.275
## 111 UF ~~ UF 0.561 0.065 8.579 0.000 0.433 0.689
## 112 CTH ~~ CTH 0.155 0.070 2.212 0.027 0.018 0.292
## 113 SC ~~ SC 0.169 0.049 3.458 0.001 0.073 0.265
## 114 LSC ~~ LSC 0.546 0.064 8.551 0.000 0.421 0.671
## 115 TT ~~ TT 0.475 0.081 5.870 0.000 0.317 0.634
## 116 AE ~~ AE 0.320 0.064 4.963 0.000 0.194 0.446
## 117 FSS ~~ FSS 1.000 0.000 NA NA 1.000 1.000
fitMeasures(fit4second31)
## npar fmin
## 71.000 1.913
## chisq df
## 1514.807 425.000
## pvalue chisq.scaled
## 0.000 1406.416
## df.scaled pvalue.scaled
## 425.000 0.000
## chisq.scaling.factor baseline.chisq
## 1.304 12636.298
## baseline.df baseline.pvalue
## 465.000 0.000
## baseline.chisq.scaled baseline.df.scaled
## 3479.024 465.000
## baseline.pvalue.scaled baseline.chisq.scaling.factor
## 0.000 4.038
## cfi tli
## 0.910 0.902
## nnfi rfi
## 0.902 0.869
## nfi pnfi
## 0.880 0.804
## ifi rni
## 0.911 0.910
## cfi.scaled tli.scaled
## 0.674 0.644
## cfi.robust tli.robust
## NA NA
## nnfi.scaled nnfi.robust
## 0.644 NA
## rfi.scaled nfi.scaled
## 0.558 0.596
## ifi.scaled rni.scaled
## 0.679 0.674
## rni.robust rmsea
## NA 0.081
## rmsea.ci.lower rmsea.ci.upper
## 0.076 0.085
## rmsea.pvalue rmsea.scaled
## 0.000 0.076
## rmsea.ci.lower.scaled rmsea.ci.upper.scaled
## 0.072 0.081
## rmsea.pvalue.scaled rmsea.robust
## 0.000 NA
## rmsea.ci.lower.robust rmsea.ci.upper.robust
## NA NA
## rmsea.pvalue.robust rmr
## NA 0.103
## rmr_nomean srmr
## 0.103 0.096
## srmr_bentler srmr_bentler_nomean
## 0.096 0.096
## crmr crmr_nomean
## 0.099 0.099
## srmr_mplus srmr_mplus_nomean
## 0.096 0.096
## cn_05 cn_01
## 124.617 130.271
## gfi agfi
## 0.928 0.916
## pgfi mfi
## 0.795 0.252
## ecvi
## 4.194
library(semPlot)
semPlot::semPaths(
fit4second31, "std", curvePivot = T, layout = "tree", rotation = 1,
fade = T, intercepts = T, residuals = T, esize = 1.5, asize = 1.5)
library(semTools)
semTools::reliabilityL2(fit4second31, "FSS")
## omegaL1 omegaL2 partialOmegaL1
## 0.8670291 0.9594418 0.9223540
(df <- semTools::reliability(fit4second31, return.total = T))
## CSB MAA CG UF CTH SC LSC
## alpha 0.5936267 0.7347327 0.5694930 0.7120178 0.6978117 0.7462389 0.7771464
## omega 0.5941502 0.7299435 0.5587028 0.6483471 0.7090589 0.7491601 0.7717262
## omega2 0.5941502 0.7299435 0.5587028 0.6483471 0.7090589 0.7491601 0.7717262
## omega3 0.5898501 0.7237941 0.5448405 0.5683736 0.7207706 0.7496655 0.7615538
## avevar 0.2737433 0.4751220 0.3062688 0.3384433 0.3795198 0.5004866 0.4599783
## TT AE total
## alpha 0.6399146 0.6420792 0.9101544
## omega 0.6488831 0.6617904 0.9270114
## omega2 0.6488831 0.6617904 0.9270114
## omega3 0.6379060 0.6609784 0.9201376
## avevar 0.3980068 0.4093950 0.3922478
knitr::kable(df, digits = 3)
| CSB | MAA | CG | UF | CTH | SC | LSC | TT | AE | total | |
|---|---|---|---|---|---|---|---|---|---|---|
| alpha | 0.594 | 0.735 | 0.569 | 0.712 | 0.698 | 0.746 | 0.777 | 0.640 | 0.642 | 0.910 |
| omega | 0.594 | 0.730 | 0.559 | 0.648 | 0.709 | 0.749 | 0.772 | 0.649 | 0.662 | 0.927 |
| omega2 | 0.594 | 0.730 | 0.559 | 0.648 | 0.709 | 0.749 | 0.772 | 0.649 | 0.662 | 0.927 |
| omega3 | 0.590 | 0.724 | 0.545 | 0.568 | 0.721 | 0.750 | 0.762 | 0.638 | 0.661 | 0.920 |
| avevar | 0.274 | 0.475 | 0.306 | 0.338 | 0.380 | 0.500 | 0.460 | 0.398 | 0.409 | 0.392 |
(df <- convergentDiscriminantValidity(fit4second31, mdl4second31, fss, "FSS"))
## Warning in cbind(CR, AVE, VIF, VIF.i, df): number of rows of result is not a
## multiple of vector length (arg 3)
## CR AVE VIF VIF.i CSB MAA CG
## CSB 0.6032852 0.2737433 1.972909 1.350265 0.5232049 0.5026141 0.9253765
## MAA 0.7337803 0.4751220 1.522931 1.649417 0.5788980 0.6892909 0.5455026
## CG 0.5606054 0.3062688 2.148920 1.345908 0.8365002 0.6223574 0.5534156
## UF 0.6675025 0.3384433 1.834351 1.792668 0.5847369 0.4350452 0.6286347
## CTH 0.7121304 0.3795198 2.400510 1.784923 0.8109632 0.6033579 0.8718444
## SC 0.7491646 0.5004866 2.599610 1.617192 0.8041431 0.5982837 0.8645122
## LSC 0.7822650 0.4599783 1.493768 1.673296 0.5941748 0.4420670 0.6387811
## TT 0.6603563 0.3980068 1.712809 1.415744 0.6390020 0.4754185 0.6869736
## AE 0.6737215 0.4093950 2.074153 1.589593 0.7274310 0.5412098 0.7820412
## FSS 0.9433210 0.3922478 1.972909 1.350265 0.8820925 0.6562781 0.9483135
## UF CTH SC LSC TT AE FSS
## CSB 0.6823664 0.7269748 0.7798938 0.6297587 0.6405967 0.9122697 NA
## MAA 0.3534014 0.6312613 0.5027684 0.4337557 0.6723065 0.6966798 NA
## CG 0.9538860 0.7658937 0.9381181 0.5881305 0.5259780 0.6461508 NA
## UF 0.5817588 0.5541886 0.7427982 0.4160803 0.2568435 0.4254335 NA
## CTH 0.6094435 0.6160518 0.9530643 0.6880799 0.6880588 0.7099641 NA
## SC 0.6043181 0.8381201 0.7074508 0.5774395 0.5589487 0.6167628 NA
## LSC 0.4465258 0.6192801 0.6140721 0.6782170 0.4617055 0.5922447 NA
## TT 0.4802137 0.6660014 0.6604004 0.4879645 0.6308778 0.9012036 NA
## AE 0.5466686 0.7581667 0.7517906 0.5554920 0.5974008 0.6398399 NA
## FSS 0.6628976 0.9193630 0.9116313 0.6735970 0.7244162 0.8246652 0.6262969
knitr::kable(df, digits = 3)
| CR | AVE | VIF | VIF.i | CSB | MAA | CG | UF | CTH | SC | LSC | TT | AE | FSS | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| CSB | 0.603 | 0.274 | 1.973 | 1.350 | 0.523 | 0.503 | 0.925 | 0.682 | 0.727 | 0.780 | 0.630 | 0.641 | 0.912 | NA |
| MAA | 0.734 | 0.475 | 1.523 | 1.649 | 0.579 | 0.689 | 0.546 | 0.353 | 0.631 | 0.503 | 0.434 | 0.672 | 0.697 | NA |
| CG | 0.561 | 0.306 | 2.149 | 1.346 | 0.837 | 0.622 | 0.553 | 0.954 | 0.766 | 0.938 | 0.588 | 0.526 | 0.646 | NA |
| UF | 0.668 | 0.338 | 1.834 | 1.793 | 0.585 | 0.435 | 0.629 | 0.582 | 0.554 | 0.743 | 0.416 | 0.257 | 0.425 | NA |
| CTH | 0.712 | 0.380 | 2.401 | 1.785 | 0.811 | 0.603 | 0.872 | 0.609 | 0.616 | 0.953 | 0.688 | 0.688 | 0.710 | NA |
| SC | 0.749 | 0.500 | 2.600 | 1.617 | 0.804 | 0.598 | 0.865 | 0.604 | 0.838 | 0.707 | 0.577 | 0.559 | 0.617 | NA |
| LSC | 0.782 | 0.460 | 1.494 | 1.673 | 0.594 | 0.442 | 0.639 | 0.447 | 0.619 | 0.614 | 0.678 | 0.462 | 0.592 | NA |
| TT | 0.660 | 0.398 | 1.713 | 1.416 | 0.639 | 0.475 | 0.687 | 0.480 | 0.666 | 0.660 | 0.488 | 0.631 | 0.901 | NA |
| AE | 0.674 | 0.409 | 2.074 | 1.590 | 0.727 | 0.541 | 0.782 | 0.547 | 0.758 | 0.752 | 0.555 | 0.597 | 0.640 | NA |
| FSS | 0.943 | 0.392 | 1.973 | 1.350 | 0.882 | 0.656 | 0.948 | 0.663 | 0.919 | 0.912 | 0.674 | 0.724 | 0.825 | 0.626 |
(df <- summariseFits(list('9-multi model(36 items)'=fit4multi,
'2nd-order model (36 items)'=fit4second,
'9-multi model(31 items)'=fit4multi31,
'2nd-order model (31 items)'=fit4second31)))
## chisq df chisq/df gfi agfi cfi tli srmr
## 9-multi model(36 items) 2369.737 558 4.247 0.904 0.886 0.871 0.854 0.102
## 2nd-order model (36 items) 2771.034 585 4.737 0.888 0.873 0.844 0.832 0.111
## 9-multi model(31 items) 1232.684 398 3.097 0.942 0.927 0.931 0.92 0.086
## 2nd-order model (31 items) 1514.807 425 3.564 0.928 0.916 0.91 0.902 0.096
## rmsea rmsea.ci
## 9-multi model(36 items) 0.091 "[0.087; 0.094]"
## 2nd-order model (36 items) 0.097 "[0.094; 0.101]"
## 9-multi model(31 items) 0.073 "[0.068; 0.078]"
## 2nd-order model (31 items) 0.081 "[0.076; 0.085]"
knitr::kable(df, digits = 3)
| chisq | df | chisq/df | gfi | agfi | cfi | tli | srmr | rmsea | rmsea.ci | |
|---|---|---|---|---|---|---|---|---|---|---|
| 9-multi model(36 items) | 2369.737 | 558 | 4.247 | 0.904 | 0.886 | 0.871 | 0.854 | 0.102 | 0.091 | [0.087; 0.094] |
| 2nd-order model (36 items) | 2771.034 | 585 | 4.737 | 0.888 | 0.873 | 0.844 | 0.832 | 0.111 | 0.097 | [0.094; 0.101] |
| 9-multi model(31 items) | 1232.684 | 398 | 3.097 | 0.942 | 0.927 | 0.931 | 0.92 | 0.086 | 0.073 | [0.068; 0.078] |
| 2nd-order model (31 items) | 1514.807 | 425 | 3.564 | 0.928 | 0.916 | 0.91 | 0.902 | 0.096 | 0.081 | [0.076; 0.085] |
library(mirt)
## Loading required package: stats4
## Loading required package: lattice
mirt4mult <- mirt(fss, 1, itemtype='graded')
##
Iteration: 1, Log-Lik: -18440.765, Max-Change: 1.45623
Iteration: 2, Log-Lik: -18219.381, Max-Change: 0.43701
Iteration: 3, Log-Lik: -18192.163, Max-Change: 0.15387
Iteration: 4, Log-Lik: -18185.794, Max-Change: 0.14540
Iteration: 5, Log-Lik: -18182.827, Max-Change: 0.07083
Iteration: 6, Log-Lik: -18180.951, Max-Change: 0.04134
Iteration: 7, Log-Lik: -18178.833, Max-Change: 0.02731
Iteration: 8, Log-Lik: -18178.197, Max-Change: 0.02398
Iteration: 9, Log-Lik: -18177.718, Max-Change: 0.02040
Iteration: 10, Log-Lik: -18176.636, Max-Change: 0.01143
Iteration: 11, Log-Lik: -18176.565, Max-Change: 0.00766
Iteration: 12, Log-Lik: -18176.518, Max-Change: 0.00657
Iteration: 13, Log-Lik: -18176.419, Max-Change: 0.01042
Iteration: 14, Log-Lik: -18176.401, Max-Change: 0.00265
Iteration: 15, Log-Lik: -18176.395, Max-Change: 0.00183
Iteration: 16, Log-Lik: -18176.386, Max-Change: 0.00233
Iteration: 17, Log-Lik: -18176.383, Max-Change: 0.00300
Iteration: 18, Log-Lik: -18176.380, Max-Change: 0.00070
Iteration: 19, Log-Lik: -18176.380, Max-Change: 0.00080
Iteration: 20, Log-Lik: -18176.378, Max-Change: 0.00103
Iteration: 21, Log-Lik: -18176.378, Max-Change: 0.00093
Iteration: 22, Log-Lik: -18176.377, Max-Change: 0.00131
Iteration: 23, Log-Lik: -18176.377, Max-Change: 0.00039
Iteration: 24, Log-Lik: -18176.377, Max-Change: 0.00098
Iteration: 25, Log-Lik: -18176.377, Max-Change: 0.00165
Iteration: 26, Log-Lik: -18176.376, Max-Change: 0.00033
Iteration: 27, Log-Lik: -18176.376, Max-Change: 0.00083
Iteration: 28, Log-Lik: -18176.376, Max-Change: 0.00041
Iteration: 29, Log-Lik: -18176.376, Max-Change: 0.00103
Iteration: 30, Log-Lik: -18176.375, Max-Change: 0.00031
Iteration: 31, Log-Lik: -18176.375, Max-Change: 0.00027
Iteration: 32, Log-Lik: -18176.375, Max-Change: 0.00069
Iteration: 33, Log-Lik: -18176.375, Max-Change: 0.00102
Iteration: 34, Log-Lik: -18176.375, Max-Change: 0.00081
Iteration: 35, Log-Lik: -18176.375, Max-Change: 0.00024
Iteration: 36, Log-Lik: -18176.375, Max-Change: 0.00061
Iteration: 37, Log-Lik: -18176.375, Max-Change: 0.00030
Iteration: 38, Log-Lik: -18176.375, Max-Change: 0.00076
Iteration: 39, Log-Lik: -18176.375, Max-Change: 0.00023
Iteration: 40, Log-Lik: -18176.375, Max-Change: 0.00020
Iteration: 41, Log-Lik: -18176.375, Max-Change: 0.00051
Iteration: 42, Log-Lik: -18176.375, Max-Change: 0.00075
Iteration: 43, Log-Lik: -18176.375, Max-Change: 0.00060
Iteration: 44, Log-Lik: -18176.375, Max-Change: 0.00018
Iteration: 45, Log-Lik: -18176.375, Max-Change: 0.00045
Iteration: 46, Log-Lik: -18176.375, Max-Change: 0.00022
Iteration: 47, Log-Lik: -18176.374, Max-Change: 0.00056
Iteration: 48, Log-Lik: -18176.374, Max-Change: 0.00017
Iteration: 49, Log-Lik: -18176.374, Max-Change: 0.00074
Iteration: 50, Log-Lik: -18176.374, Max-Change: 0.00022
Iteration: 51, Log-Lik: -18176.374, Max-Change: 0.00055
Iteration: 52, Log-Lik: -18176.374, Max-Change: 0.00029
Iteration: 53, Log-Lik: -18176.374, Max-Change: 0.00074
Iteration: 54, Log-Lik: -18176.374, Max-Change: 0.00022
Iteration: 55, Log-Lik: -18176.374, Max-Change: 0.00019
Iteration: 56, Log-Lik: -18176.374, Max-Change: 0.00049
Iteration: 57, Log-Lik: -18176.374, Max-Change: 0.00015
Iteration: 58, Log-Lik: -18176.374, Max-Change: 0.00064
Iteration: 59, Log-Lik: -18176.374, Max-Change: 0.00019
Iteration: 60, Log-Lik: -18176.374, Max-Change: 0.00048
Iteration: 61, Log-Lik: -18176.374, Max-Change: 0.00025
Iteration: 62, Log-Lik: -18176.374, Max-Change: 0.00064
Iteration: 63, Log-Lik: -18176.374, Max-Change: 0.00019
Iteration: 64, Log-Lik: -18176.374, Max-Change: 0.00017
Iteration: 65, Log-Lik: -18176.374, Max-Change: 0.00043
Iteration: 66, Log-Lik: -18176.374, Max-Change: 0.00063
Iteration: 67, Log-Lik: -18176.374, Max-Change: 0.00043
Iteration: 68, Log-Lik: -18176.374, Max-Change: 0.00013
Iteration: 69, Log-Lik: -18176.374, Max-Change: 0.00033
Iteration: 70, Log-Lik: -18176.374, Max-Change: 0.00016
Iteration: 71, Log-Lik: -18176.374, Max-Change: 0.00041
Iteration: 72, Log-Lik: -18176.374, Max-Change: 0.00012
Iteration: 73, Log-Lik: -18176.374, Max-Change: 0.00054
Iteration: 74, Log-Lik: -18176.374, Max-Change: 0.00016
Iteration: 75, Log-Lik: -18176.374, Max-Change: 0.00040
Iteration: 76, Log-Lik: -18176.374, Max-Change: 0.00021
Iteration: 77, Log-Lik: -18176.374, Max-Change: 0.00054
Iteration: 78, Log-Lik: -18176.374, Max-Change: 0.00016
Iteration: 79, Log-Lik: -18176.374, Max-Change: 0.00014
Iteration: 80, Log-Lik: -18176.374, Max-Change: 0.00036
Iteration: 81, Log-Lik: -18176.374, Max-Change: 0.00053
Iteration: 82, Log-Lik: -18176.374, Max-Change: 0.00037
Iteration: 83, Log-Lik: -18176.374, Max-Change: 0.00011
Iteration: 84, Log-Lik: -18176.374, Max-Change: 0.00028
Iteration: 85, Log-Lik: -18176.374, Max-Change: 0.00014
Iteration: 86, Log-Lik: -18176.374, Max-Change: 0.00035
Iteration: 87, Log-Lik: -18176.374, Max-Change: 0.00051
Iteration: 88, Log-Lik: -18176.374, Max-Change: 0.00035
Iteration: 89, Log-Lik: -18176.374, Max-Change: 0.00010
Iteration: 90, Log-Lik: -18176.374, Max-Change: 0.00027
Iteration: 91, Log-Lik: -18176.374, Max-Change: 0.00013
Iteration: 92, Log-Lik: -18176.374, Max-Change: 0.00033
Iteration: 93, Log-Lik: -18176.374, Max-Change: 0.00049
Iteration: 94, Log-Lik: -18176.374, Max-Change: 0.00033
Iteration: 95, Log-Lik: -18176.374, Max-Change: 0.00010
(param4mult <- coef(mirt4mult, simplify=T, IRTpars=T))
## $items
## a b1 b2 b3 b4
## Q1 1.296 -3.883 -2.631 -1.334 1.006
## Q2 1.144 -2.481 -0.945 0.079 2.070
## Q3 0.871 -4.775 -1.522 0.140 2.827
## Q4 1.839 -3.017 -1.684 -0.583 1.262
## Q5 1.429 -3.235 -1.440 -0.308 1.568
## Q6 0.449 -4.835 -1.601 0.112 4.494
## Q7 1.421 -2.916 -1.370 -0.331 1.560
## Q8 0.535 -3.869 -1.515 0.855 3.801
## Q9 0.742 -4.466 -2.392 -0.426 2.485
## Q10 1.630 -2.987 -1.734 -0.560 0.809
## Q11 1.408 -2.827 -1.232 -0.172 1.666
## Q12 0.365 -7.800 -2.156 1.218 7.040
## Q13 0.542 -6.455 -1.843 0.640 4.863
## Q14 1.370 -2.524 -1.398 -0.617 1.235
## Q15 1.725 -3.289 -1.569 -0.439 1.374
## Q16 1.174 -2.909 -0.954 -0.068 1.674
## Q17 1.353 -2.874 -1.133 0.103 2.049
## Q18 0.769 -3.475 -1.108 0.785 3.352
## Q19 0.945 -4.147 -1.984 -0.412 1.840
## Q20 1.080 -3.355 -1.579 -0.366 1.337
## Q21 1.334 -3.008 -1.399 0.059 1.969
## Q22 0.673 -5.290 -1.548 0.016 3.953
## Q23 1.668 -2.775 -1.341 -0.263 1.436
## Q24 2.405 -3.047 -1.417 -0.432 1.078
## Q25 1.319 -3.116 -1.181 -0.166 1.911
## Q26 1.466 -2.547 -1.070 -0.046 1.752
## Q27 2.021 -2.426 -1.238 -0.101 1.434
## Q28 0.892 -3.345 -1.202 0.366 2.067
## Q29 0.456 -5.829 -1.428 1.049 5.106
## Q30 1.879 -3.270 -1.643 -0.640 0.738
## Q31 1.074 -4.706 -1.941 -0.453 2.022
## Q32 1.591 -2.936 -1.332 -0.565 1.072
## Q33 1.815 -3.381 -1.637 -0.609 1.399
## Q34 0.763 -3.490 -1.457 -0.257 1.862
## Q35 0.636 -4.230 -1.782 0.233 2.971
## Q36 1.383 -3.323 -1.801 -0.686 0.656
##
## $means
## F1
## 0
##
## $cov
## F1
## F1 1
library(matrixStats)
##
## Attaching package: 'matrixStats'
## The following object is masked from 'package:dplyr':
##
## count
df <- data.frame(param4mult$items)
df <- cbind(df, bx = matrixStats::rowMeans2(as.matrix(df), cols = c(2,3,4,5)))
df <- rbind(df, M = colMeans(df))
df <- rbind(df, SD = matrixStats::colSds(as.matrix(df)))
knitr::kable(df, digits = 3)
| a | b1 | b2 | b3 | b4 | bx | |
|---|---|---|---|---|---|---|
| Q1 | 1.296 | -3.883 | -2.631 | -1.334 | 1.006 | -1.711 |
| Q2 | 1.144 | -2.481 | -0.945 | 0.079 | 2.070 | -0.319 |
| Q3 | 0.871 | -4.775 | -1.522 | 0.140 | 2.827 | -0.833 |
| Q4 | 1.839 | -3.017 | -1.684 | -0.583 | 1.262 | -1.006 |
| Q5 | 1.429 | -3.235 | -1.440 | -0.308 | 1.568 | -0.854 |
| Q6 | 0.449 | -4.835 | -1.601 | 0.112 | 4.494 | -0.457 |
| Q7 | 1.421 | -2.916 | -1.370 | -0.331 | 1.560 | -0.764 |
| Q8 | 0.535 | -3.869 | -1.515 | 0.855 | 3.801 | -0.182 |
| Q9 | 0.742 | -4.466 | -2.392 | -0.426 | 2.485 | -1.200 |
| Q10 | 1.630 | -2.987 | -1.734 | -0.560 | 0.809 | -1.118 |
| Q11 | 1.408 | -2.827 | -1.232 | -0.172 | 1.666 | -0.641 |
| Q12 | 0.365 | -7.800 | -2.156 | 1.218 | 7.040 | -0.424 |
| Q13 | 0.542 | -6.455 | -1.843 | 0.640 | 4.863 | -0.699 |
| Q14 | 1.370 | -2.524 | -1.398 | -0.617 | 1.235 | -0.826 |
| Q15 | 1.725 | -3.289 | -1.569 | -0.439 | 1.374 | -0.981 |
| Q16 | 1.174 | -2.909 | -0.954 | -0.068 | 1.674 | -0.564 |
| Q17 | 1.353 | -2.874 | -1.133 | 0.103 | 2.049 | -0.464 |
| Q18 | 0.769 | -3.475 | -1.108 | 0.785 | 3.352 | -0.112 |
| Q19 | 0.945 | -4.147 | -1.984 | -0.412 | 1.840 | -1.176 |
| Q20 | 1.080 | -3.355 | -1.579 | -0.366 | 1.337 | -0.991 |
| Q21 | 1.334 | -3.008 | -1.399 | 0.059 | 1.969 | -0.595 |
| Q22 | 0.673 | -5.290 | -1.548 | 0.016 | 3.953 | -0.717 |
| Q23 | 1.668 | -2.775 | -1.341 | -0.263 | 1.436 | -0.736 |
| Q24 | 2.405 | -3.047 | -1.417 | -0.432 | 1.078 | -0.955 |
| Q25 | 1.319 | -3.116 | -1.181 | -0.166 | 1.911 | -0.638 |
| Q26 | 1.466 | -2.547 | -1.070 | -0.046 | 1.752 | -0.478 |
| Q27 | 2.021 | -2.426 | -1.238 | -0.101 | 1.434 | -0.583 |
| Q28 | 0.892 | -3.345 | -1.202 | 0.366 | 2.067 | -0.529 |
| Q29 | 0.456 | -5.829 | -1.428 | 1.049 | 5.106 | -0.275 |
| Q30 | 1.879 | -3.270 | -1.643 | -0.640 | 0.738 | -1.204 |
| Q31 | 1.074 | -4.706 | -1.941 | -0.453 | 2.022 | -1.269 |
| Q32 | 1.591 | -2.936 | -1.332 | -0.565 | 1.072 | -0.940 |
| Q33 | 1.815 | -3.381 | -1.637 | -0.609 | 1.399 | -1.057 |
| Q34 | 0.763 | -3.490 | -1.457 | -0.257 | 1.862 | -0.836 |
| Q35 | 0.636 | -4.230 | -1.782 | 0.233 | 2.971 | -0.702 |
| Q36 | 1.383 | -3.323 | -1.801 | -0.686 | 0.656 | -1.288 |
| M | 1.207 | -3.690 | -1.534 | -0.116 | 2.215 | -0.781 |
| SD | 0.492 | 1.171 | 0.367 | 0.526 | 1.392 | 0.342 |
plot(mirt4mult, type='infotrace')
plot(mirt4mult, type='info')
plot(mirt4mult, type='infoSE')
library(lavaan)
mdl4uni <- 'FSS =~ Q19 + Q29 + Q12 + Q22 + Q32 + Q6 + Q7 + Q17 + Q36'
fit4uni <-cfa(mdl4uni, data=fss[,c("Q19","Q29","Q12","Q22","Q32","Q6","Q7","Q17","Q36")], estimator="WLSMV", std.lv=T)
standardizedSolution(fit4uni)
## lhs op rhs est.std se z pvalue ci.lower ci.upper
## 1 FSS =~ Q19 0.516 0.049 10.526 0.000 0.420 0.612
## 2 FSS =~ Q29 0.146 0.069 2.113 0.035 0.011 0.281
## 3 FSS =~ Q12 0.605 0.050 12.043 0.000 0.506 0.703
## 4 FSS =~ Q22 0.699 0.048 14.472 0.000 0.604 0.794
## 5 FSS =~ Q32 0.180 0.056 3.205 0.001 0.070 0.290
## 6 FSS =~ Q6 0.519 0.051 10.173 0.000 0.419 0.619
## 7 FSS =~ Q7 0.339 0.061 5.545 0.000 0.219 0.459
## 8 FSS =~ Q17 0.091 0.070 1.289 0.198 -0.047 0.228
## 9 FSS =~ Q36 0.039 0.058 0.675 0.500 -0.075 0.153
## 10 Q19 ~~ Q19 0.734 0.051 14.502 0.000 0.635 0.833
## 11 Q29 ~~ Q29 0.979 0.020 48.744 0.000 0.939 1.018
## 12 Q12 ~~ Q12 0.634 0.061 10.437 0.000 0.515 0.753
## 13 Q22 ~~ Q22 0.511 0.068 7.572 0.000 0.379 0.644
## 14 Q32 ~~ Q32 0.968 0.020 48.026 0.000 0.928 1.007
## 15 Q6 ~~ Q6 0.731 0.053 13.807 0.000 0.627 0.835
## 16 Q7 ~~ Q7 0.885 0.041 21.359 0.000 0.804 0.966
## 17 Q17 ~~ Q17 0.992 0.013 77.980 0.000 0.967 1.017
## 18 Q36 ~~ Q36 0.998 0.005 219.315 0.000 0.990 1.007
## 19 FSS ~~ FSS 1.000 0.000 NA NA 1.000 1.000
fitMeasures(fit4uni)
## npar fmin
## 18.000 0.386
## chisq df
## 305.503 27.000
## pvalue chisq.scaled
## 0.000 344.051
## df.scaled pvalue.scaled
## 27.000 0.000
## chisq.scaling.factor baseline.chisq
## 0.903 639.744
## baseline.df baseline.pvalue
## 36.000 0.000
## baseline.chisq.scaled baseline.df.scaled
## 460.266 36.000
## baseline.pvalue.scaled baseline.chisq.scaling.factor
## 0.000 1.423
## cfi tli
## 0.539 0.385
## nnfi rfi
## 0.385 0.363
## nfi pnfi
## 0.522 0.392
## ifi rni
## 0.545 0.539
## cfi.scaled tli.scaled
## 0.253 0.004
## cfi.robust tli.robust
## NA NA
## nnfi.scaled nnfi.robust
## 0.004 NA
## rfi.scaled nfi.scaled
## 0.003 0.252
## ifi.scaled rni.scaled
## 0.268 0.253
## rni.robust rmsea
## NA 0.162
## rmsea.ci.lower rmsea.ci.upper
## 0.146 0.178
## rmsea.pvalue rmsea.scaled
## 0.000 0.172
## rmsea.ci.lower.scaled rmsea.ci.upper.scaled
## 0.156 0.189
## rmsea.pvalue.scaled rmsea.robust
## 0.000 NA
## rmsea.ci.lower.robust rmsea.ci.upper.robust
## NA NA
## rmsea.pvalue.robust rmr
## NA 0.152
## rmr_nomean srmr
## 0.152 0.137
## srmr_bentler srmr_bentler_nomean
## 0.137 0.137
## crmr crmr_nomean
## 0.153 0.153
## srmr_mplus srmr_mplus_nomean
## 0.137 0.137
## cn_05 cn_01
## 52.864 61.721
## gfi agfi
## 0.910 0.849
## pgfi mfi
## 0.546 0.703
## ecvi
## 0.865
library(semPlot)
semPlot::semPaths(
fit4uni, "std", curvePivot = T, layout = "circle",
rotation = 3, fade = T, intercepts = T, residuals = T,
sizeLat = 4, sizeLat2 = 3, sizeMan = 4, esize = 1.5, asize = 1.5,
edge.label.position = 0.55, levels = c(9.75,10,10,10))
library(semTools)
(df <- semTools::reliability(fit4uni))
## FSS
## alpha 0.6029174
## omega 0.5696327
## omega2 0.5696327
## omega3 0.5070341
## avevar 0.1745423
knitr::kable(df, digits = 3)
| FSS | |
|---|---|
| alpha | 0.603 |
| omega | 0.570 |
| omega2 | 0.570 |
| omega3 | 0.507 |
| avevar | 0.175 |
library(lavaan)
mdl4alt <- 'FSS =~ Q10 + Q11 + Q30 + Q4 + Q23 + Q24 + Q7 + Q26 + Q27'
fit4alt <-cfa(mdl4alt, data=fss[,c("Q10","Q11","Q30","Q4","Q23","Q24","Q7","Q26","Q27")], estimator="WLSMV", std.lv=T)
standardizedSolution(fit4alt)
## lhs op rhs est.std se z pvalue ci.lower ci.upper
## 1 FSS =~ Q10 0.570 0.041 13.770 0 0.489 0.651
## 2 FSS =~ Q11 0.511 0.047 10.870 0 0.419 0.603
## 3 FSS =~ Q30 0.633 0.039 16.239 0 0.557 0.710
## 4 FSS =~ Q4 0.608 0.038 16.162 0 0.534 0.681
## 5 FSS =~ Q23 0.650 0.035 18.378 0 0.580 0.719
## 6 FSS =~ Q24 0.751 0.027 27.479 0 0.698 0.805
## 7 FSS =~ Q7 0.488 0.047 10.401 0 0.396 0.580
## 8 FSS =~ Q26 0.591 0.045 13.111 0 0.502 0.679
## 9 FSS =~ Q27 0.689 0.035 19.908 0 0.621 0.757
## 10 Q10 ~~ Q10 0.675 0.047 14.301 0 0.583 0.768
## 11 Q11 ~~ Q11 0.739 0.048 15.409 0 0.645 0.833
## 12 Q30 ~~ Q30 0.599 0.049 12.123 0 0.502 0.696
## 13 Q4 ~~ Q4 0.631 0.046 13.800 0 0.541 0.720
## 14 Q23 ~~ Q23 0.578 0.046 12.587 0 0.488 0.668
## 15 Q24 ~~ Q24 0.435 0.041 10.591 0 0.355 0.516
## 16 Q7 ~~ Q7 0.762 0.046 16.634 0 0.672 0.852
## 17 Q26 ~~ Q26 0.651 0.053 12.226 0 0.547 0.755
## 18 Q27 ~~ Q27 0.526 0.048 11.025 0 0.432 0.619
## 19 FSS ~~ FSS 1.000 0.000 NA NA 1.000 1.000
fitMeasures(fit4alt)
## npar fmin
## 18.000 0.056
## chisq df
## 44.359 27.000
## pvalue chisq.scaled
## 0.019 85.491
## df.scaled pvalue.scaled
## 27.000 0.000
## chisq.scaling.factor baseline.chisq
## 0.556 1729.140
## baseline.df baseline.pvalue
## 36.000 0.000
## baseline.chisq.scaled baseline.df.scaled
## 872.265 36.000
## baseline.pvalue.scaled baseline.chisq.scaling.factor
## 0.000 2.025
## cfi tli
## 0.990 0.986
## nnfi rfi
## 0.986 0.966
## nfi pnfi
## 0.974 0.731
## ifi rni
## 0.990 0.990
## cfi.scaled tli.scaled
## 0.930 0.907
## cfi.robust tli.robust
## NA NA
## nnfi.scaled nnfi.robust
## 0.907 NA
## rfi.scaled nfi.scaled
## 0.869 0.902
## ifi.scaled rni.scaled
## 0.931 0.930
## rni.robust rmsea
## NA 0.040
## rmsea.ci.lower rmsea.ci.upper
## 0.017 0.061
## rmsea.pvalue rmsea.scaled
## 0.759 0.074
## rmsea.ci.lower.scaled rmsea.ci.upper.scaled
## 0.057 0.092
## rmsea.pvalue.scaled rmsea.robust
## 0.013 NA
## rmsea.ci.lower.robust rmsea.ci.upper.robust
## NA NA
## rmsea.pvalue.robust rmr
## NA 0.052
## rmr_nomean srmr
## 0.052 0.055
## srmr_bentler srmr_bentler_nomean
## 0.055 0.055
## crmr crmr_nomean
## 0.061 0.061
## srmr_mplus srmr_mplus_nomean
## 0.055 0.055
## cn_05 cn_01
## 358.190 419.183
## gfi agfi
## 0.989 0.981
## pgfi mfi
## 0.593 0.978
## ecvi
## 0.203
library(semPlot)
semPlot::semPaths(
fit4alt, "std", curvePivot = T, layout = "circle",
rotation = 3, fade = T, intercepts = T, residuals = T,
sizeLat = 4, sizeLat2 = 3, sizeMan = 4, esize = 1.5, asize = 1.5,
edge.label.position = 0.55, levels = c(9.75,10,10,10))
library(semTools)
(df <- semTools::reliability(fit4alt))
## FSS
## alpha 0.8394996
## omega 0.8401415
## omega2 0.8401415
## omega3 0.8388554
## avevar 0.3710501
knitr::kable(df, digits = 3)
| FSS | |
|---|---|
| alpha | 0.839 |
| omega | 0.840 |
| omega2 | 0.840 |
| omega3 | 0.839 |
| avevar | 0.371 |
df <- summariseFits(list('uni model'=fit4uni, 'alt model'=fit4alt))
knitr::kable(df, digits = 3)
| chisq | df | chisq/df | gfi | agfi | cfi | tli | srmr | rmsea | rmsea.ci | |
|---|---|---|---|---|---|---|---|---|---|---|
| uni model | 305.503 | 27 | 11.315 | 0.91 | 0.849 | 0.539 | 0.385 | 0.137 | 0.162 | [0.146; 0.178] |
| alt model | 44.359 | 27 | 1.643 | 0.989 | 0.981 | 0.99 | 0.986 | 0.055 | 0.04 | [0.017; 0.061] |
library(mirt)
mirt4alt <- mirt(fss[,c("Q10","Q11","Q30","Q4","Q23","Q24","Q7","Q26","Q27")],
1, itemtype='graded')
##
Iteration: 1, Log-Lik: -4417.229, Max-Change: 2.26553
Iteration: 2, Log-Lik: -4323.610, Max-Change: 0.71319
Iteration: 3, Log-Lik: -4302.027, Max-Change: 0.39904
Iteration: 4, Log-Lik: -4294.821, Max-Change: 0.14063
Iteration: 5, Log-Lik: -4291.548, Max-Change: 0.10464
Iteration: 6, Log-Lik: -4289.921, Max-Change: 0.07147
Iteration: 7, Log-Lik: -4288.981, Max-Change: 0.04729
Iteration: 8, Log-Lik: -4288.553, Max-Change: 0.03426
Iteration: 9, Log-Lik: -4288.318, Max-Change: 0.02522
Iteration: 10, Log-Lik: -4288.078, Max-Change: 0.01181
Iteration: 11, Log-Lik: -4288.049, Max-Change: 0.00804
Iteration: 12, Log-Lik: -4288.032, Max-Change: 0.00535
Iteration: 13, Log-Lik: -4288.016, Max-Change: 0.00349
Iteration: 14, Log-Lik: -4288.013, Max-Change: 0.00318
Iteration: 15, Log-Lik: -4288.011, Max-Change: 0.00195
Iteration: 16, Log-Lik: -4288.008, Max-Change: 0.00179
Iteration: 17, Log-Lik: -4288.007, Max-Change: 0.00104
Iteration: 18, Log-Lik: -4288.007, Max-Change: 0.00093
Iteration: 19, Log-Lik: -4288.006, Max-Change: 0.00035
Iteration: 20, Log-Lik: -4288.006, Max-Change: 0.00016
Iteration: 21, Log-Lik: -4288.006, Max-Change: 0.00011
Iteration: 22, Log-Lik: -4288.006, Max-Change: 0.00044
Iteration: 23, Log-Lik: -4288.006, Max-Change: 0.00050
Iteration: 24, Log-Lik: -4288.006, Max-Change: 0.00012
Iteration: 25, Log-Lik: -4288.006, Max-Change: 0.00010
Iteration: 26, Log-Lik: -4288.006, Max-Change: 0.00030
Iteration: 27, Log-Lik: -4288.006, Max-Change: 0.00009
param4alt <- coef(mirt4alt, simplify=T, IRTpars=T)
library(matrixStats)
df <- data.frame(param4alt$items)
df <- cbind(df, bx = matrixStats::rowMeans2(as.matrix(df), cols = c(2,3,4,5)))
df <- rbind(df, M = colMeans(df))
df <- rbind(df, SD = matrixStats::colSds(as.matrix(df)))
knitr::kable(df, digits = 3)
| a | b1 | b2 | b3 | b4 | bx | |
|---|---|---|---|---|---|---|
| Q10 | 1.397 | -3.357 | -1.928 | -0.596 | 0.940 | -1.235 |
| Q11 | 1.262 | -3.090 | -1.335 | -0.162 | 1.823 | -0.691 |
| Q30 | 1.725 | -3.531 | -1.762 | -0.670 | 0.822 | -1.285 |
| Q4 | 1.824 | -3.071 | -1.729 | -0.595 | 1.320 | -1.019 |
| Q23 | 1.793 | -2.725 | -1.311 | -0.239 | 1.441 | -0.708 |
| Q24 | 2.612 | -3.050 | -1.417 | -0.416 | 1.110 | -0.943 |
| Q7 | 1.151 | -3.420 | -1.578 | -0.360 | 1.828 | -0.883 |
| Q26 | 1.461 | -2.592 | -1.074 | -0.027 | 1.791 | -0.475 |
| Q27 | 1.944 | -2.535 | -1.278 | -0.085 | 1.527 | -0.593 |
| M | 1.686 | -3.041 | -1.490 | -0.350 | 1.400 | -0.870 |
| SD | 0.416 | 0.341 | 0.260 | 0.223 | 0.360 | 0.263 |
plot(mirt4alt, type='infotrace')
plot(mirt4alt, type='info')
plot(mirt4alt, type='infoSE')
knitr::purl("code/script20220505.Rmd", output="code/script.R", documentation = 2)